﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyGeneric
{
    /// <summary>
    /// 泛型是语法糖，由编译器提供的功能。 会产生副本
    /// </summary>
    class GenericClass
    {
        /// <summary>
        /// 延迟思想。 方法声明的时候不指定参数类型， 在调用的时候才指定参数类型
        /// 没有性能损失。
        /// </summary>
        /// <typeparam name="T">T 是占位符</typeparam>
        /// <param name="tParamter">T 类型参数</param>
        public static void ShowT<T>(T tParamter)   //泛型方法之 泛型参数
        {
            Console.WriteLine("GenericClass.ShowT,parameter={0},parameterType={1}", tParamter, tParamter.GetType());

        }

        public static void show<T,S,W>(T t,S s,W w, int iParameter,string sParameter)
        {

        }

        public static T Get<T>(int id,T t)  //泛型方法之泛型返回
        {
            return default(T);
        }

        public class SomeGenericClass<W,S,T,XX> //泛型类
        { }

        public interface GenericInterface<T,S>  //泛型接口
        { }

        public delegate T GetDelegate<T>();  //泛型委托
    }
}
